"use strict"

const { defineConfig } = require('@vue/cli-service')
const path = require("path")
const name = process.env.VUE_APP_TITLE || "组件框架"
const port = process.env.port || process.env.npm_config_port || 90
const requestURI = {
    dev_api: `http://localhost:10001`,
    prod_api: `http://101.35.254.110:10001`,
}

const api = process.env.NODE_ENV === 'development' ? requestURI.dev_api : requestURI.prod_api

module.exports = defineConfig({
    transpileDependencies: true,
    publicPath: "/" ,
    // 在npm run build 或 yarn build 时 ，生成文件的目录名称（要和baseUrl的生产环境路径一致）（默认dist）
    outputDir: "dist",
    // 用于放置生成的静态资源 (js、css、img、fonts) 的；（项目打包之后，静态资源会放在这个文件夹下）
    assetsDir: "static",
    // 是否开启eslint保存检测，有效值：ture | false | 'error'
    lintOnSave: process.env.NODE_ENV === "development",
    // 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建。
    productionSourceMap: false,
    // webpack-dev-server 相关配置
    devServer: {
        host: '0.0.0.0',
        port,
        open: false,
        proxy: {
            // detail: https://cli.vuejs.org/config/#devserver-proxy
            [process.env.VUE_APP_BASE_API]: {
                target: api,
                changeOrigin: true,
                pathRewrite: {
                    ['^' + process.env.VUE_APP_BASE_API]: ''
                }
            },
        },
    },

    chainWebpack: config => {
        config.plugin("html").tap(args => {
            args[0].title = name;
            return args
        })

        // svg图标加载
        config.module
            .rule('svg')
            .exclude.add(path.join(__dirname, 'src/assets/icons/svg'))
            .end()

        config.module
            .rule('icons')// 定义一个名叫 icons 的规则
            .test(/\.svg$/)// 设置 icons 的匹配正则
            .include.add(path.join(__dirname, 'src/assets/icons/svg'))// 设置当前规则的作用目录，只在当前目录下才执行当前规则
            .end()
            .use('svg-sprite')// 指定一个名叫 svg-sprite 的 loader 配置
            .loader('svg-sprite-loader')// 该配置使用 svg-sprite-loader 作为处理 loader
            .options({// 该 svg-sprite-loader 的配置
                symbolId: 'icon-[name]'
            })
            .end()
    }
})
